<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 访问器封装 - 模拟 java 语言中的 setter/getter 方法
        var cat = {
            name:'小花',
            _age:18
        }


        Object.defineProperty(cat,'age',{
            configurable:false,
            enumerable:true,

            // getter 方法 
            get:function() {
                return this._age ;
            },

            // setter 方法
            set:function(value) {
                if(isNaN(value) || value<0) {
                    throw '年龄必须是大于0的数字' ;
                }

                this._age = value ;
            }
        }) ;

        // 赋值时：调用 setter 方法
        cat.age = 20 ;

        // 取值时：调用 getter 方法
        console.log(cat.age);


        // console.log(cat._age);
        
        


    </script>
</body>
</html>